package br.com.linkers.controller;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

import java.util.List;
import br.com.linkers.dao.TelefoneDAO;
import br.com.linkers.entity.Telefones;
import br.com.linkers.entity.Usuarios;


@SessionScoped
@ManagedBean(name="telefoneBean")
public class TelefoneBean implements Serializable {
	
	private static final long serialVersionUID = 2378089347505374183L;

	@ManagedProperty("#{usuarioBean}")
	private UsuarioBean usuarioBean;

	TelefoneDAO dao = new TelefoneDAO();
	String telefoneLogadoFormatado;
	
	List<Telefones> telefonesUL;
	List<Telefones> telefonesView;

	
	
	

	public String getTelefoneLogadoFormatado(){
		Long id = (long) usuarioBean.getUsuarioLogado().getId();
		Telefones ultimoTel = dao.buscaPorIdUsuarioUltimo(id);

		if(ultimoTel!=null){
			String num = "("+ultimoTel.getDdd().trim()+") "+ultimoTel.getNumero().trim();
			telefoneLogadoFormatado = num;
			return telefoneLogadoFormatado;
		}else{
			return "";
		}
	}
	
	public String getTelefoneLogadoFormatadoUser(Usuarios u){
		
			Long id = (long) u.getId();
			Telefones ultimoTel = dao.buscaPorIdUsuarioUltimo(id);
			
			if(ultimoTel!=null){
				String num = "("+ultimoTel.getDdd().trim()+") "+ultimoTel.getNumero().trim();
				return num;
		
			}else{
				return "";
			}
	}
	
	public int getQuantidadeTelefones(){
		return getTelefonesUL().size();
	}
	

	public void atualizaTelefonesUL(){
		//ERROR usando o LAZY
		//failed to lazily initialize a collection
		//return usuarioBean.getUsuarioLogado().getList_telefone();
		if(this.usuarioBean.getUsuarioLogado()!=null){
		Long id = (long) this.usuarioBean.getUsuarioLogado().getId();
		this.telefonesUL = dao.buscaPorIdUsuario(id);
		}
	}
	
	public void atualizaTelefonesView(){
		if(this.usuarioBean.getUsuarioView()!=null){
		Long id = (long) this.usuarioBean.getUsuarioView().getId();
		this.telefonesView = dao.buscaPorIdUsuario(id);
		}
	}


	
	
	public void removerTel(Telefones t){
		dao.deletar(t);
	}
	
	
	public void editarTel(){
		
	}
	
	
	

	public UsuarioBean getUsuarioBean() {
		return usuarioBean;
	}


	public void setUsuarioBean(UsuarioBean usuarioBean) {
		this.usuarioBean = usuarioBean;
	}


	public List<Telefones> getTelefonesUL() {
		atualizaTelefonesUL();
		return this.telefonesUL;
	}


	public void setTelefonesUL(List<Telefones> telefonesUL) {
		this.telefonesUL = telefonesUL;
	}


	public void setTelefoneLogadoFormatado(String telefoneLogadoFormatado) {
		this.telefoneLogadoFormatado = telefoneLogadoFormatado;
	}


	public List<Telefones> getTelefonesView() {
		atualizaTelefonesView();
		return telefonesView;
	}


	public void setTelefonesView(List<Telefones> telefonesView) {
		this.telefonesView = telefonesView;
	}
	
	
	
	
	


}
